Volviendo a un proyecto antiguo, descubro que no se estaba cargando nada. Revisando el log de la consola veo lo siguiente:
Uncaught TypeError: Failed to resolve module specifier "three". Relative references must start with either "/", "./", or "../".En mi script obtuve lo siguiente:
<script type="module"> import * as THREE from "https://cdn.skypack.dev/three/build/three.module.js" import { OBJLoader } from "https://cdn.skypack.dev/three/examples/jsm/loaders/OBJLoader.js" import { FirstPersonControls } from "https://cdn.skypack.dev/three/examples/jsm/controls/FirstPersonControls.js" Intento retroceder algunas versiones y no desaparece este error hasta que llego a 0.136.0 . ¿Ha cambiado la forma en que uno importa three.js , o es un error?
Además, ¿habría alguna forma de detectar esto en tiempo de ejecución? Obtengo el último número de versión de Skypack e intento una importación. Si falla, retrocede automáticamente un decimal y vuelve a intentarlo.
Editar
@ Mugen87 ofrece usar importmap . Cambio mi código con lo siguiente:
<script type="importmap"> { "imports": { "three": "https://cdn.skypack.dev/three/build/three.module.js", "three/OBJLoader": "https://cdn.skypack.dev/three/examples/jsm/loaders/OBJLoader.js", "three/FirstPersonControls": "https://cdn.skypack.dev/three/examples/jsm/controls/FirstPersonControls.js" } } </script> <script type="module"> import * as THREE from "three" import { OBJLoader } from "three/OBJLoader" import { FirstPersonControls } from "three/FirstPersonControls"Obtuve el siguiente error:
Uncaught SyntaxError: The requested module '/-/three@v0.137.5-HJEdoVYPhjkiJWkt6XIa/dist=es2019,mode=raw/build/three.module.js' does not provide an export named 'default'El CDN que está utilizando (cdn.skypack.dev) realiza algunas reexportaciones en su lado, lo que está causando el problema.
El archivo al que hace referencia en su importación no es en realidad el módulo three.js, sino una redirección.
Ese archivo hace una export * (que está bien), Y una export {default} , que es donde ocurre la falla. Three.js no tiene una exportación default .
Es probable que Skypack esté aplicando esta redirección universalmente a todos los módulos, por lo que no necesariamente SABEN que esto está sucediendo, pero definitivamente deberían probar su sistema antes de alojar un módulo específico...
Intente cambiar su importmap para hacer referencia a la siguiente URL, y debería funcionar:
https://cdn.skypack.dev/-/three@v0.137.5-HJEdoVYPhjkiJWkt6XIa/dist=es2019,mode=raw/build/three.module.js